/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package occho.model;

import java.sql.SQLException;
import java.util.*;
import occho.data.*;

/**
 *
 * @author Juan Antonio
 */
public class FachadaVerResultados {

    Usuario usuario;
    
    /**
     * Constructor
     * @param user
     */
    public FachadaVerResultados(Usuario user) {
        this.usuario=user;
    }
    
    
    /**
     * Devuelve una lista de los ids de los alumnos que han realizado un test.
     * @param t
     * @return ArrayList<Integer>
     * @throws ClassNotFoundException
     * @throws SQLException
     */
    public ArrayList<Integer> seleccionarIdsAlumnos(Test t) throws ClassNotFoundException, SQLException{
        OracleDAOFactory daoFactory = OracleDAOFactory.getInstancia();
        PreguntaAlumnoDAO preguntaAlumnoDAO=daoFactory.getPreguntaAlumnoDAO();
        return(ArrayList<Integer>) preguntaAlumnoDAO.seleccionarAlumnosTest(t.getIdTest());
    }
    
    /**
     * Devuelve una lista de alumnos cuyo id esta contenido en la lista de ids
     * @param listaIds
     * @return ArrayList<Usuario>
     * @throws ClassNotFoundException
     * @throws SQLException
     */
    public ArrayList<Usuario> seleccionarAlumnos(ArrayList<Integer> listaIds) throws ClassNotFoundException, SQLException{
        OracleDAOFactory daoFactory = OracleDAOFactory.getInstancia();
        UsuarioDAO usuarioDAO = daoFactory.getUsuarioDAO();
        return usuarioDAO.seleccionarAlumnos(listaIds);
    }
    
    /**
     * Devuelve un map con los usuarios y el resultado en el test
     * @param t
     * @return HashMap<Usuario, Test>
     * @throws ClassNotFoundException
     * @throws SQLException
     */
    public HashMap<Usuario, Test> seleccionarTestAlumnos(Test t) throws ClassNotFoundException, SQLException{
        OracleDAOFactory daoFactory = OracleDAOFactory.getInstancia();
        TestDAO testDAO = daoFactory.getTestDAO();
        ArrayList<Usuario> listaAlumnos = seleccionarAlumnos(seleccionarIdsAlumnos(t));
        HashMap<Usuario, Test> mapUsuarioTest= new HashMap<Usuario, Test>();
        for(Usuario u: listaAlumnos){
            Test testRealizado=testDAO.seleccionarTest(t.getIdTest());
            testRealizado.setPreguntas(testDAO.seleccionarPreguntasRespondidas(t.getIdTest(), u.getIdUsuario()));
            mapUsuarioTest.put(u, testRealizado);
        }
        return mapUsuarioTest;
    }
    
    
    
    /**
     * Devuelve los resultados de las pregutnas que un usuario ha exo en un test.
     * @param t
     * @return ArrayList<PreguntaAlumno>
     * @throws SQLException
     * @throws ClassNotFoundException
     */
    public ArrayList<PreguntaAlumno> selecionarPreguntaAlumnoTest(Test t) throws SQLException, ClassNotFoundException {
        OracleDAOFactory daoFactory = OracleDAOFactory.getInstancia();
        PreguntaAlumnoDAO preguntaAlumnoDAO=daoFactory.getPreguntaAlumnoDAO();
        return  (ArrayList<PreguntaAlumno>) preguntaAlumnoDAO.seleccionarPreguntaAlumnoTest(t.getIdTest());
    }
}
